home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / etc / bash_completion.d / cryptsetup < prev    next >
Text File  |  2009-10-14  |  3KB  |  125 lines

  1. # Bash command completion for cryptsetup
  2.  
  3. have cryptsetup &&
  4. _cryptsetup()
  5. {
  6.     local cmd cur prev action actions luksactions argopts noargopts
  7.  
  8.     COMPREPLY=()
  9.     cur="${COMP_WORDS[COMP_CWORD]}"
  10.     prev="${COMP_WORDS[COMP_CWORD-1]}"
  11.  
  12.     actions="create remove status reload resize"
  13.     luksactions="luksFormat luksOpen luksClose luksAddKey luksDelKey luksUUID isLuks luksDump"
  14.     actions="$luksactions $actions"
  15.  
  16.     argopts="-c --cipher -h --hash -d --key-file -s --key-size -b --size"
  17.     argopts="$argopts -o --offset -p --skip -i --iter-time -q --batch-mode"
  18.     argopts="$argopts -t --timeout -T --tries"
  19.     noargopts="-y --verify-passphrase --readonly --version --align-payload"
  20.  
  21.     # complete file names for -d and --key-file
  22.     if [ "-d" = "$prev" -o "--key-file" = "$prev" ] ; then
  23.     COMPREPLY=( $(compgen -f -- "${cur}") )
  24.     fi
  25.  
  26.     # If previous word was an option requiring an argument, can't complete
  27.     for argopt in $argopts ; do
  28.     if [ "$argopt" = "$prev" ] ; then
  29.         return
  30.     fi
  31.     done
  32.  
  33.     # If user typing an option, complete it
  34.     if [[ $cur == -* ]] ; then
  35.     COMPREPLY=( $(compgen -W "$argopts $noargopts" -- "$cur") )
  36.     return
  37.     fi
  38.  
  39.     # See if we already have an action
  40.     action=""
  41.     for word in "${COMP_WORDS[@]}" ; do
  42.     for act in $actions ; do
  43.         if [ "$word" == "$act" ] ; then
  44.         action=$act
  45.         break
  46.         fi
  47.     done
  48.  
  49.     if [ -n "$action" ] ; then
  50.         break
  51.     fi
  52.     done
  53.  
  54.     # No action yet, complete it
  55.     if [ -z "$action" ] ; then
  56.     COMPREPLY=( $(compgen -W "$actions" -- "$cur") )
  57.     return
  58.     fi
  59.  
  60.     # Completion based on action
  61.     case "$action" in
  62.     "create")
  63.         # create <name> <device>
  64.         if [ $COMP_CWORD -gt 1 ] &&
  65.         [ ${COMP_WORDS[COMP_CWORD-2]} == "create" ] ; then
  66.         COMPREPLY=( $(compgen -f -X '!/dev*' -- "$cur") )
  67.         fi
  68.     ;;
  69.  
  70.     "reload"|"remove"|"resize"|"status"|"luksClose")
  71.         # action <name>
  72.         MAPPINGS="$(ls /dev/mapper | fgrep --invert-match control)"
  73.         OLDIFS="$IFS"
  74.         IFS="
  75. "
  76.         COMPREPLY=( $(compgen -W "$MAPPINGS" -- "$cur") )
  77.         IFS="$OLDIFS"
  78.     ;;
  79.  
  80.     "luksDelKey")
  81.         # luksDelKey <name> <key slot number>
  82.         if [ ${COMP_WORDS[COMP_CWORD-1]} == "luksDelKey" ] ; then
  83.         # Get name
  84.         MAPPINGS="$(ls /dev/mapper | fgrep --invert-match control)"
  85.         OLDIFS="$IFS"
  86.             IFS="
  87. "
  88.             COMPREPLY=( $(compgen -W "$MAPPINGS" -- "$cur") )
  89.             IFS="$OLDIFS"
  90.         fi
  91.     ;;
  92.  
  93.     "luksAddKey"|"luksFormat")
  94.         # action <name> [<key file>]
  95.         if [ ${COMP_WORDS[COMP_CWORD-1]} == "luksFormat" ] ; then
  96.         # Get name
  97.         MAPPINGS="$(ls /dev/mapper | fgrep --invert-match control)"
  98.         OLDIFS="$IFS"
  99.             IFS="
  100. "
  101.             COMPREPLY=( $(compgen -W "$MAPPINGS" -- "$cur") )
  102.             IFS="$OLDIFS"
  103.         elif [ ${COMP_WORDS[COMP_CWORD-2]} == "luksFormat" ] ; then
  104.         # Get key file
  105.         COMPREPLY=( $(compgen -f -- "$cur") )
  106.         fi
  107.     ;;
  108.  
  109.     "luksOpen")
  110.         # luksOpen <device> <name>
  111.         if [ ${COMP_WORDS[COMP_CWORD-1]} == "luksOpen" ] ; then
  112.         COMPREPLY=( $(compgen -f -X '!/dev*' -- "$cur") )
  113.         fi
  114.     ;;
  115.  
  116.     "isLuks"|"luksDump"|"luksUUID")
  117.         # action <device>
  118.         COMPREPLY=( $(compgen -f -X '!/dev*' -- "$cur") )
  119.     ;;
  120.     esac
  121. }
  122. [ "$have" ] && complete -o filenames -F _cryptsetup cryptsetup
  123.  
  124. # vim:set filetype=sh sts=4 sw=4:
  125.